

package main.new_2024.month_03;


import java.util.HashMap;
import java.util.Map;

/**
 * @Description: todo 2671. 频率跟踪器
 * 请你设计并实现一个能够对其中的值进行跟踪的数据结构，并支持对频率相关查询进行应答。
 * 实现 FrequencyTracker 类：
 * FrequencyTracker()：使用一个空数组初始化 FrequencyTracker 对象。
 * void add(int number)：添加一个 number 到数据结构中。
 * void deleteOne(int number)：从数据结构中删除一个 number 。数据结构 可能不包含 number ，在这种情况下不删除任何内容。
 * bool hasFrequency(int frequency): 如果数据结构中存在出现 frequency 次的数字，则返回 true，否则返回 false。
 *
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2024/2/27
 * @Param:
 * @return:
 **/
public class Solution0321 {

    //频率跟踪器
    class FrequencyTracker {
        //存数字出现次数
        Map<Integer,Integer> map;
        //存次数出现次数
        int[] count;
        public FrequencyTracker() {
            map = new HashMap<>();
            count = new int[100001];
        }

        public void add(int number) {
            int target = 1;
            if (map.containsKey(number)) {
                target = map.get(number) + 1;
                count[target-1] = count[target-1] - 1;
            }
            map.put(number,target);
            count[target] = count[target] +1;
        }

        public void deleteOne(int number) {
            Integer target = map.get(number);
            if (target != null){
                target = target-1;
                if (target == 0){
                    map.remove(number);
                }else {
                    map.put(number,target);
                }
                count[target] = count[target] +1;
                count[target+1] = count[target+1] - 1;
            }
        }

        public boolean hasFrequency(int frequency) {
            return count[frequency] >0;
        }
    }

    public static void main(String[] args) {
        Solution0321 test = new Solution0321();

    }
}

